On Benchmarking the Capability of Symbolic Execution Tools with Logic Bombs

نویسندگان

  • Hui Xu
  • Zirui Zhao
  • Yangfan Zhou
  • Michael R. Lyu
چکیده

Symbolic execution is an important software testing approach. It has been widely employed in program analysis, such as bug detection and malware analysis. However, the approach is not overwhelming because it suffers many issues, including the well-known scalability issue and other challenges, such as handling floating-point numbers and symbolic memories. Currently, several symbolic execution tools are available off-theshelf, but they generally do not demonstrate their limitations clearly to users. Yet, we have no effective approach to benchmark their capabilities. Without such information, users would not know which tool to choose, or how reliable their program analysis results are based on particular symbolic execution tools. To address such concerns, this paper proposes a novel approach to benchmark symbolic execution tools. Our approach is based on logic bombs which are guarded by particular challenging problems. If a symbolic execution tool can find test cases to trigger such logic bombs during evaluation, it indicates that the tool can handle corresponding problems. Following the idea, we have designed an automated benchmark framework and a dataset of logic bombs covering 12 different challenges. Then we have conducted real-world experiments on benchmarking three popular symbolic execution tools: KLEE, Angr, and Triton. Experimental results show that our approach can reveal their limitations in handling particular issues accurately and efficiently. The benchmark process generally takes only a few minutes to evaluate a tool. To better serve the community, we release our toolset on GitHub as open source, and we hope it would serve as an essential tool to benchmark symbolic execution tools in the future.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Benchmarking Method and Designs Targeting Logic Synthesis for FPGAs

A new set of benchmark designs is presented together with a reference experiment flow based on state of the art industrial and academic tools. Interfacing the tools became possible by extending the academic design specification format (BLIF) with the capability to represent blocks with unknown logic specification. This extension is required for handling large HDL designs containing memories and...

متن کامل

Viper: A Verification Infrastructure for Permission-Based Reasoning

The automation of verification techniques based on firstorder logic specifications has benefited greatly from verification infrastructures such as Boogie and Why. These offer an intermediate language that can express diverse language features and verification techniques, as well as back-end tools such as verification condition generators. However, these infrastructures are not well suited for v...

متن کامل

A Critical Examination of Ibn-Sina’s Theory of the Conditional Syllogism

This paper will examine Ibn Sina’s theory of the Conditional Syllogism from a purely logical point of view, and will lay bare the principles he adopted for founding his theory, and the reason why the newly introduced part of his logic remained undeveloped and eventually was removed from the texts of logic in the later Islamic tradition. As a preliminary discussion, this paper briefly examines I...

متن کامل

On the multivariate process capability vector in fuzzy environment

The production of a process is expected to meet customer demands, specifications or engineering tolerances. The ability of a process to meet these expectations is expresed as a single number using a process capability index. When the quality of the products relates to more than one characteristic, multivariate process capability indices are applied. As it is known, in some circumstances we are ...

متن کامل

Specifying Languages and Verifying Programs with K http://kframework.org

K is a rewrite-based executable semantic framework for defining languages. The K framework is designed to allow implementing a variety of generic tools that can be used with any language defined in K, such as parsers, interpreters, symbolic execution engines, semantic debuggers, test-case generators, state-space explorers, model checkers, and even deductive program verifiers. The latter are bas...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • CoRR

دوره abs/1712.01674  شماره 

صفحات  -

تاریخ انتشار 2017